/**
* Mueve un panel de arriba hacia abajo segun el movimiento de scroll del navegador
**/
var myj_ESTADO_TOGGLE_MENU = "close";

;(function(jQuery) {
  jQuery.fn.extend({
    //---------------------------------------------------------------------------
    //Permite que el menu lateral se mueva junto con el scroll del navegador
    floatPanel: function(params) {
      var time = 500;
      var topElem = null;
      var elem = "#" + jQuery(this).attr("id");

      if (params) {
        switch (params.speed) {
          case "fast":time = 250;break;
          case "normal":time = 500;break;
          case "slow":time = 1000;break;
          default:time = params.speed;
        };
      }
      if (time == undefined || isNaN(time)) time = 500;

      topElem = parseInt(jQuery(elem).css("top").substring(0, jQuery(elem).css("top").indexOf("px")));
      jQuery(window).scroll(function() {
        var offset = topElem + jQuery(document).scrollTop() + "px";
        jQuery(elem).animate({top: offset}, {duration: time, queue: false});
      });
    },

    //---------------------------------------------------------------------------
    //Muestra u oculta el menu lateral
    toggleMenu: function(nameHolderMenu, ancho) {
      //obtener ancho del menu y quitarle hasta el ancho de la imagen menu
      jQuery(this).toggle(
          function() { // mouseOut
            jQuery(nameHolderMenu).animate({"left": "+=" + ancho + "px"}, 500);
            jQuery(this).attr("class", "floatLeft boton-menu-activo");
            myj_ESTADO_TOGGLE_MENU = "open";
          },
          function() { // mouseOver
            jQuery(nameHolderMenu).animate({"left": "-=" + ancho + "px"}, 500);
            jQuery(this).attr("class", "floatLeft boton-menu-inactivo");
            myj_ESTADO_TOGGLE_MENU = "close";
          }
      );
    },

    //---------------------------------------------------------------------------
    //muestra las opciones de configuracion del usuario conectado
    verConfiguracionUsuario: function(nameHolderConfiguracion) {
      jQuery(this).mouseenter(
        function() {
          var offset = jQuery(this).offset();
          jQuery(nameHolderConfiguracion).show();
          jQuery(nameHolderConfiguracion).css("top", (offset.top + jQuery(this).height() - 1) + "px");
          jQuery(nameHolderConfiguracion).css("left", (offset.left - (jQuery(nameHolderConfiguracion).width() - 4)) + "px");
          jQuery(this).attr("class", "ico16-flecha-configuracion-contraer");
        }
      );
    },

    //---------------------------------------------------------------------------
    //muestra las opciones de configuracion del usuario conectado
    verSimbologia: function(nameHolderSimbologia, activarOnClick, options) {
      if(activarOnClick){
        jQuery(this).click(
          function() {
            var offset = jQuery(this).offset();
            var ajusteTop = parseInt(options.ajusteTop.replace("px",""));
            var ajusteLeft = parseInt(options.ajusteLeft.replace("px",""));
            jQuery(nameHolderSimbologia).show();
            jQuery(nameHolderSimbologia).css("top", (offset.top + (jQuery(this).height() + ajusteTop ) ) + "px");
            jQuery(nameHolderSimbologia).css("left", (offset.left - (jQuery(nameHolderSimbologia).width() - (jQuery(this).width() + ajusteLeft ) )) + "px");
          }
        );
      } else {
        jQuery(this).mouseover(
          function() {
            var offset = jQuery(this).offset();
            var ajusteTop = parseInt(options.ajusteTop.replace("px",""));
            var ajusteLeft = parseInt(options.ajusteLeft.replace("px",""));
            jQuery(nameHolderSimbologia).show();
            jQuery(nameHolderSimbologia).css("top", (offset.top + (jQuery(this).height() + ajusteTop ) ) + "px");
            jQuery(nameHolderSimbologia).css("left", (offset.left - (jQuery(nameHolderSimbologia).width() - (jQuery(this).width() + ajusteLeft ) )) + "px");
          }
        );
      }
    },

    //---------------------------------------------------------------------------
    //Muestra u oculta la imagen del bottom
    toggleImagenBottom: function(option) {
      //obtener ancho del menu y quitarle hasta el ancho de la imagen menu
      jQuery(this).toggle(
          function() { // mouseOut
            jQuery("#" + option.nameHolderImagen).animate({"bottom": "+=" + option.heightHolderImagen + "px"}, 500);
            jQuery("#" + option.nameHolderEspacioBlanco).attr("style", "width:100%; height:"+ (parseInt(option.heightHolderImagen) + 80) + "px");
            jQuery("#" + option.nameHolderTituloVerImagen).html("<div class=\"cssTituloVerImagenPadding\"><img src=\""+ option.themeBaseUrl +"/img/arrow_down2.png\" style=\"vertical-align: middle\" alt=\"\" />&nbsp;Ocultar Factura</div>");
          },
          function() { // mouseOver
            jQuery("#" + option.nameHolderImagen).animate({"bottom": "-=" + option.heightHolderImagen + "px"}, 500);
            jQuery("#" + option.nameHolderEspacioBlanco).attr("style", "width:100%; height:50px");
            jQuery("#" + option.nameHolderTituloVerImagen).html("<div class=\"cssTituloVerImagenPadding\"><img src=\""+ option.themeBaseUrl +"/img/arrow_up2.png\" style=\"vertical-align: middle\" alt=\"\" />&nbsp;Ver Factura (tama&ntilde;o original)</div>");
          }
      );
    },

    //---------------------------------------------------------------------------
    //deja fijo un control en top o bottom de la pantalla
    holderFixed: function(options) {
      var objFecha = new Date();
      var dia = objFecha.getDate();
      var mes = objFecha.getMonth()+1;
      var ano = objFecha.getFullYear();
      var hora = objFecha.getHours();
      var minutos = objFecha.getMinutes();
      var segundos = objFecha.getSeconds();
      var nombreUnico = "wrap_"+ano+mes+dia+hora+minutos+segundos+options.position;
      var height = "0";

      if (options.position == "closed") {
        jQuery(this).wrap("<div id=\""+ nombreUnico +"\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr valign=\"top\"><td></td></tr></table></div>");
        jQuery("#"+ nombreUnico).attr("style","clear:both; position: fixed; right:0px; top:0px; padding-right:5px;");
      } else {
        jQuery(this).wrap("<div id=\""+ nombreUnico +"\"><center><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr valign=\"top\"><td></td></tr></table></center></div>");
        height = jQuery("#"+ nombreUnico).height();

        if (options.position == "bottom") {
          jQuery("#"+ nombreUnico).before("<div style=\"clear:both; height:"+ (height + 10) +"px\"></div>");
          jQuery("#"+ nombreUnico).attr("style","clear:both; position:fixed; bottom:0px; background-color:#eee; border:solid 2px #bbb; width:98%; padding-top:7px; padding-bottom:5px;");
        } else {
          jQuery("#"+ nombreUnico).after("<div style=\"clear:both; height:"+ (height + 20) +"px\"></div>");
          jQuery("#"+ nombreUnico).attr("style","clear:both; position:fixed; top:0px; background-color:#eee; border:solid 2px #bbb; width:99%; padding-top:7px; padding-bottom:5px;");
        }
      }
    },

    //---------------------------------------------------------------------------
    //marca o desmarca todos los check segun el prefijo seleccionado
    marcarCheck: function(options){
      var objChkAll = jQuery(this);
      var prefijoCheck = options.prefijoCheck;
      var buscarPorAtributo = options.buscarPorAtributo;

      //verifica al cargar el control si estan todos los check marcados para activar el all
      jQuery("input["+ buscarPorAtributo +"^='"+ prefijoCheck +"']").each(function(){
        var todos = jQuery("input:checkbox["+ buscarPorAtributo +"^='"+ prefijoCheck +"']");
        var activos = jQuery("input:checked["+ buscarPorAtributo +"^='"+ prefijoCheck +"']");
        jQuery(objChkAll).attr("checked", todos.length == activos.length);
      });

      //marca todos los check desde el all
      jQuery(objChkAll).click(function(){
        var chks = jQuery("input:checkbox["+ buscarPorAtributo +"^='"+ prefijoCheck +"']");
        chks.attr("checked", jQuery(this).is(":checked"));
      });

      //cada vez que se marca un check verifica si estan todos marcados para activar el all
      jQuery("input["+ buscarPorAtributo +"^='"+ prefijoCheck +"']").click(function(){
        var todos = jQuery("input:checkbox["+ buscarPorAtributo +"^='"+ prefijoCheck +"']");
        var activos = jQuery("input:checked["+ buscarPorAtributo +"^='"+ prefijoCheck +"']");
        jQuery(objChkAll).attr("checked", todos.length == activos.length);
      });
    },

    //---------------------------------------------------------------------------
    //marca o desmarca todos los check de los permisos de una pagina de la matriz
    marcarCheckPermisosPagina: function() {
      jQuery(this).each(function(){
        var idCheckAll = jQuery(this).attr("id");
        var prefijo = idCheckAll.replace("_all","");
        jQuery(this).marcarCheck({ prefijoCheck: prefijo+"_chk", buscarPorAtributo:"id"});
      })
    }


  })
})(jQuery);


